package com.itany.corejava.code08_集合.list集合;

/**
 * @author MissChen
 * @date 2024年03月04日 16:53
 */

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 定义一个用户类User，属性：id、name、age、实现以下功能，每个功能一个方法
 * 欢迎来XXXX系统，请选择对应的功能(1.添加 2.查询 3)
 * 1.添加用户信息，提示用户循环输入用户的信息，存储到ArrayList集合中
 * 2.查询所有有用户信息，输出集合中所有用户信息(遍历)
 * 3.根据编号查询指定用户信息
 * 4.根据编号修改指定用户信息
 * 5.根据编号删除指定用户信息
 *
 *
 */
public class Test04_练习 {
    static Scanner sc=new Scanner(System.in);
    static List<User> users=new ArrayList<>();

    public static void main(String[] args) {
        showMenu();
    }
    public static void showMenu(){
        System.out.println("-----------欢迎来到学生管理系统------------");
        System.out.print("请选择对应功能(1.添加 2.查询所有 3.根据编号查询 4.修改 5.删除 6.退出)");
        int choice=sc.nextInt();
        switch (choice){
            case 1:
                addUser();
                break;
            case 2:
                findAll();
                break;
            case 3:
                findById();
                break;
            case 4:
                modifyUser();
                break;
            case 5:
                deleteUser();
                break;
            case 6:
                System.out.println("您已经退出");
                break;
            default:
                System.out.println("您输入的选项有误，请重新输入");
                showMenu();
        }
    }

    /**
     * 添加用户信息，提示用户循环输入用户的信息，存储到ArrayList集合中
     */
    public static void addUser(){
        System.out.println("---------------添加用户信息---------------");
        User user=new User();
        System.out.print("请输入用户编号:");
        user.setId(sc.nextInt());
        System.out.print("请输入用户姓名:");
        user.setName(sc.next());
        System.out.print("请输入用户年龄:");
        user.setAge(sc.nextInt());
        users.add(user);
        showMenu();

    }

    /**
     * 查询所有用户信息
     */
    public static void findAll(){
        System.out.println("-------------用户列表------------");
        System.out.println("编号\t姓名\t年龄");
        for(User user:users){
            System.out.println(user.getId()+"\t"+user.getName()+"\t"+user.getAge());
        }
        showMenu();
    }

    /**
     * 根据id编号进行查找
     */
    public static void findById(){
        System.out.println("-----------根据编号查询用户信息----------");
        System.out.print("请输入需要查询的用户编号:");
        int id=sc.nextInt();
        User user=find(id);
        if(user==null){
            System.out.println("对不起，您查询的用户不存在，请检查编号是否正确");
        }else{
            System.out.println(user);
        }
        showMenu();

    }

    /**
     * 根据id查找用户是否存在
     * @param id
     * @return
     */
    public static User find(int id){
        for(User user:users){
            if(user.getId()==id){
                return user;
            }
        }
        return null;
    }

    /**
     * 根据编号修改指定用户信息
     */
    public static void modifyUser(){
        System.out.println("-----------根据编号修改用户信息----------");
        System.out.print("请输入需要修改的用户编号:");
        int id=sc.nextInt();
        User user=find(id);
        if(user==null){
            System.out.println("对不起，您修改的用户不存在，请检查编号是否正确");
        }else{//修改
            System.out.print("请输入用户姓名:");
            user.setName(sc.next());
            System.out.print("请输入用户年龄:");
            user.setAge(sc.nextInt());
            System.out.println("修改成功");
        }
        showMenu();

    }
    public static void deleteUser(){
        System.out.println("------------删除用户------------");
        System.out.print("请输入需要删除的用户编号:");
        int id=sc.nextInt();
        User user=find(id);
        if(user==null){
            System.out.println("对不起，您删除的用户不存在，请检查编号是否正确");
        }else{
            users.remove(user);
            System.out.println("删除成功");
        }
        showMenu();
    }
}
